package com.example.stukotlin.coroutines

import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main() {
    val startTime=System.currentTimeMillis()

    runBlocking {
        launch {
            println("launch1")
            delay(1000)
            println("launch1 finished")
        }

        launch {
            println("launch2")
            delay(1000)
            println("launch2 finished")
        }

        repeat(100000) {
            launch {
                println(".")
            }
        }
    }

    val endTime = System.currentTimeMillis()
    println(endTime - startTime)
}

/**
 * suspend :将函数变成挂起函数
 */
suspend fun printDot() {
    println(".")
    delay(1000)
}

/**
 * coroutineScope 挂起函数 可以保证其作用域内的所有代码和子协程在全部执行完之前，外部的协程会一直被挂起
 */
suspend fun printDot2()= coroutineScope {
    launch {
        println(".")
        delay(1000)
    }
}